package com.ruoyi.system.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 任务明细对象 tb_task_detail
 *
 * @author ruoyi
 * @date 2025-07-23
 */
@Data
@Schema(description = "任务明细对象")
public class TbTaskDetail extends BaseEntity {
    private static final long serialVersionUID = 1L;


    /** 自增主键 */
    private Long id;

    /** 关联的任务ID(对应tb_task.id) */
    @Excel(name = "关联的任务ID(对应tb_task.id)")
    @Schema(description = "关联的任务ID(对应tb_task.id)")
    private Long taskId;


    /** 任务类型(1=数据推送   2=数据更新 3=软件安装   4=软件升级 5=配置推送  6=  配置更新 7=紧急通知 8=其他) */
    @Excel(name = "任务类型(1=数据推送 2=数据更新 3=应用安装 4=应用升级 5=应用卸载 6=配置推送 7=配置更新 8=紧急通知 9=其他)")
    @Schema(description = "任务类型(1=数据推送   2=数据更新 3=软件安装   4=软件升级 5=配置推送  6=  配置更新 7=紧急通知 8=其他)")
    private Integer taskType;

    /** 推送包类型(1=app 2=data_package ) */
    @Excel(name = "推送包类型(1=app 2=data_package )")
    @Schema(description = "推送包类型(1=app 2=data_package )")
    private Integer pushPackageType;

    /** 关联包ID(对应tb_app_version.id或tb_data_package.id) */
    @Excel(name = "关联包ID(对应tb_app_version.id或tb_data_package.id)")
    @Schema(description = "关联包ID(对应tb_app_version.id或tb_data_package.id)")
    private Long packageId;

    /** 数据包名称(冗余存储) */
    @Excel(name = "数据包名称(冗余存储)")
    @Schema(description = "数据包名称(冗余存储)")
    private String packageName;

    /** 应用名(冗余存储) */
    @Excel(name = "应用名(冗余存储)")
    @Schema(description = "应用名(冗余存储)")
    private String appName;

    /** 包版本Code(冗余存储) */
    @Excel(name = "包版本Code(冗余存储)")
    @Schema(description = "包版本Code(冗余存储)")
    private String packageVersioncode;

    /** 版本编号 */
    @Excel(name = "版本编号")
    @Schema(description = "版本编号")
    private String packageVersionnumber;

    /** 包大小(字节) */
    @Excel(name = "包大小(字节)")
    @Schema(description = "包大小(MB)")
    private Double packageSize;

    /** 任务执行顺序(1,2,3...) */
    @Excel(name = "任务执行顺序(1,2,3...)")
    @Schema(description = "任务执行顺序(1,2,3...)")
    private Integer orderId;

    /** 执行状态(0=待执行 1=执行中 2=成功 3=失败 4=已取消 5=部分成功) */
    @Excel(name = "执行状态(0=待执行 1=执行中 2=成功 3=失败 4=已取消 5=部分成功)")
    @Schema(description = "执行状态(0=待执行 1=执行中 2=成功 3=失败 4=已取消 5=部分成功)")
    private Integer status;

    /** 开始执行时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "开始执行时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Schema(description = "开始执行时间")
    private Date startTime;

    /** 执行完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "执行完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Schema(description = "执行完成时间")
    private Date endTime;

    /** 执行进度(0-100) */
    @Excel(name = "执行进度(0-100)")
    @Schema(description = "执行进度(0-100)")
    private Double progress;

    /** 重试次数 */
    @Excel(name = "重试次数")
    @Schema(description = "重试次数")
    private Integer retryCount;

    /** 错误信息 */
    @Excel(name = "错误信息")
    @Schema(description = "错误信息")
    private String errorMessage;

    /** 目标设备数量 */
    @Excel(name = "目标设备数量")
    @Schema(description = "目标设备数量")
    private Integer deviceCount;

    /** 成功设备数量 */
    @Excel(name = "成功设备数量")
    @Schema(description = "成功设备数量")
    private Integer successCount;

    /** 失败设备数量 */
    @Excel(name = "失败设备数量")
    @Schema(description = "失败设备数量")
    private Integer failCount;


}
